home *** CD-ROM | disk | FTP | other *** search
/ Cracking 2 / Cracking II..iso / Tools / ApiHooks 2.2 / hdk / APIHOOKS.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  2000-04-09  |  5.4 KB  |  134 lines

  1. unit Apihooks;
  2.  
  3. {$ALIGN ON}
  4. {$MINENUMSIZE 4}
  5.  
  6. interface
  7.  
  8. uses
  9.   Windows;
  10.  
  11. type
  12.   PPointer = ^Pointer;
  13.   USHORT   = Word;
  14.  
  15.   // ApiHook.pas - constants and structures for Hook libraries
  16.  
  17. const
  18.   HOOK_EXPORT     = 0001;
  19.   HOOK_IMPORT     = 0002;
  20.   HOOK_BY_ADDRESS = 0004;
  21.   HOOK_HARD       = 0008;
  22.   HOOK_NO_UNBIND  = 0016;
  23.  
  24.   HOOKS_END       = LPCSTR(-1);  // IF UNICODE LPCWSTR
  25.   HOOKS_DYNAMIC   = LPCSTR(-2);  // IF UNICODE LPCWSTR
  26.   ALL_MODULES     = LPCSTR(-1);  // IF UNICODE LPCWSTR
  27.  
  28. type
  29.   TADDR_CONTENTS = 
  30.         
  31.     record
  32.       ReturnWhere : ^DWORD;
  33.       ReturnWhat  : DWORD;
  34.     end;
  35.     
  36.   PADDR_CONTENTS = ^TADDR_CONTENTS;
  37.   
  38.   TAPI_UNHOOK = 
  39.         
  40.     record
  41.       MaxNoAddr : DWORD;
  42.       CurNoAddr : DWORD;
  43.       WhereWhat : PADDR_CONTENTS;
  44.     end;
  45.     
  46.   PAPI_UNHOOK = ^TAPI_UNHOOK;
  47.   
  48.   TAPI_HOOK = 
  49.         
  50.     record
  51.       ModuleExport    : LPCSTR;
  52.       ApiNameOrOrd    : LPCSTR;
  53.       dwFlags         : DWORD;
  54.       ModuleImport    : LPCSTR;
  55.       UnhookAddresses : PAPI_UNHOOK;
  56.       HookAddress     : Pointer;
  57.     end;
  58.     
  59.   PAPI_HOOK = ^TAPI_HOOK;
  60.   
  61. function EstablishApiHooksA (lpszDll : LPCSTR;  ProcessId : DWORD) : DWORD; stdcall;
  62. function EstablishApiHooksW (lpszDll : LPCWSTR; ProcessId : DWORD) : DWORD; stdcall;
  63. function EstablishApiHooks  (lpszDll : LPCSTR;  ProcessId : DWORD) : DWORD; stdcall;
  64.  
  65. function EstablishApiHooksTimeA (lpszDll : LPCSTR;  ProcessId : DWORD; dwMilliseconds : DWORD) : DWORD; stdcall;
  66. function EstablishApiHooksTimeW (lpszDll : LPCWSTR; ProcessId : DWORD; dwMilliseconds : DWORD) : DWORD; stdcall;
  67. function EstablishApiHooksTime  (lpszDll : LPCSTR;  ProcessId : DWORD; dwMilliseconds : DWORD) : DWORD; stdcall;
  68.  
  69. function EstablishApiHooksTimeNTA (lpszDll : LPCSTR;  ProcessId : DWORD; dwMilliseconds : DWORD) : DWORD; stdcall;
  70. function EstablishApiHooksTimeNTW (lpszDll : LPCWSTR; ProcessId : DWORD; dwMilliseconds : DWORD) : DWORD; stdcall;
  71. function EstablishApiHooksTimeNT  (lpszDll : LPCSTR;  ProcessId : DWORD; dwMilliseconds : DWORD) : DWORD; stdcall;
  72.  
  73. function RemoteExecuteTime   (ProcessId : DWORD; dwMilliseconds : DWORD;  lpBlock : DWORD; BlockSize: DWORD;  lpCodeEnd: DWORD) : DWORD; stdcall;
  74. function RemoteExecuteTimeNT (ProcessId : DWORD; dwMilliseconds : DWORD;  lpBlock : DWORD; BlockSize: DWORD;  lpCodeEnd: DWORD) : DWORD; stdcall;
  75.  
  76. function IsModuleLoadedA (lpszDll : LPCSTR;  ProcessId : DWORD) : DWORD; stdcall;
  77. function IsModuleLoadedW (lpszDll : LPCWSTR; ProcessId : DWORD) : DWORD; stdcall;
  78. function LoadAndCallA    (lpszDll : LPCSTR;  ProcessId : DWORD; HowManyTimes : DWORD; ApiNameOrOrd : LPCSTR)  : DWORD; stdcall;
  79. function LoadAndCallW    (lpszDll : LPCWSTR; ProcessId : DWORD; HowManyTimes : DWORD; ApiNameOrOrd : LPCWSTR) : DWORD; stdcall;
  80. function UnloadModuleA   (lpszDll : LPCSTR;  ProcessId : DWORD; HowManyTimes : DWORD) : DWORD; stdcall;
  81. function UnloadModuleW   (lpszDll : LPCWSTR; ProcessId : DWORD; HowManyTimes : DWORD) : DWORD; stdcall;
  82.  
  83. function HookApiA (ModuleExport : LPCSTR;  ApiNameOrOrd : LPCSTR;  dwFlags : DWORD; ModuleImport : LPCSTR;  ApiUnhook : PAPI_UNHOOK; HookAddress : LPVOID; ExcludeModules : LPDWORD) : DWORD; stdcall;
  84. function HookApiW (ModuleExport : LPCWSTR; ApiNameOrOrd : LPCWSTR; dwFlags : DWORD; ModuleImport : LPCWSTR; ApiUnhook : PAPI_UNHOOK; HookAddress : LPVOID; ExcludeModules : LPDWORD) : DWORD; stdcall;
  85.  
  86. const
  87.   ErrorSuccess     = 0;
  88.   ErrorException   = 1;
  89.   ErrorOpenProcess = 2;
  90.   ErrorRemoteAlloc = 3;
  91.   ErrorRemoteExec  = 4;
  92.   ErrorRemoteFree  = 5;
  93.   ErrorTimeOut     = 9;
  94.  
  95.   HOOK_EXACT       = HOOK_EXPORT or HOOK_IMPORT;
  96.   HOOK_ALL         = HOOK_EXPORT or HOOK_BY_ADDRESS;
  97.   
  98. implementation
  99.  
  100. const
  101.   ApihooksDll = 'apihooks.dll';
  102.  
  103. function EstablishApiHooksA; external ApihooksDll name 'EstablishApiHooksA';
  104. function EstablishApiHooksW; external ApihooksDll name 'EstablishApiHooksW';
  105. function EstablishApiHooks;  external ApihooksDll name 'EstablishApiHooksA';
  106.  
  107. function EstablishApiHooksTimeA; external ApihooksDll name 'EstablishApiHooksTimeA';
  108. function EstablishApiHooksTimeW; external ApihooksDll name 'EstablishApiHooksTimeW';
  109. function EstablishApiHooksTime;  external ApihooksDll name 'EstablishApiHooksTimeA';
  110.  
  111. function EstablishApiHooksTimeNTA; external ApihooksDll name 'EstablishApiHooksTimeNTA';
  112. function EstablishApiHooksTimeNTW; external ApihooksDll name 'EstablishApiHooksTimeNTW';
  113. function EstablishApiHooksTimeNT;  external ApihooksDll name 'EstablishApiHooksTimeNTA';
  114.  
  115. function RemoteExecuteTime;    external ApihooksDll name 'RemoteExecuteTime';
  116. function RemoteExecuteTimeNT;  external ApihooksDll name 'RemoteExecuteTimeNT';
  117.  
  118. function IsModuleLoadedA; external ApihooksDll name 'IsModuleLoadedA';
  119. function IsModuleLoadedW; external ApihooksDll name 'IsModuleLoadedW';
  120. function IsModuleLoaded;  external ApihooksDll name 'IsModuleLoadedA';
  121.  
  122. function LoadAndCallA; external ApihooksDll name 'LoadAndCallA';
  123. function LoadAndCallW; external ApihooksDll name 'LoadAndCallW';
  124. function LoadAndCall;  external ApihooksDll name 'LoadAndCallA';
  125.  
  126. function UnloadModuleA; external ApihooksDll name 'UnloadModuleA';
  127. function UnloadModuleW; external ApihooksDll name 'UnloadModuleW';
  128. function UnloadModule;  external ApihooksDll name 'UnloadModuleA';
  129.  
  130. function HookApiA; external ApihooksDll name 'HookApiA';
  131. function HookApiW; external ApihooksDll name 'HookApiW';
  132. function HookApi;  external ApihooksDll name 'HookApiA';
  133.  
  134. end.